/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tesis.controller;

import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import tesis.controller.util.ConvertBeanUtil;
import tesis.domain.Cargo;
import tesis.domain.NombreCargo;
import tesis.domain.dto.CargoDTO;
import tesis.service.CargoService;
import tesis.utils.EstadosAI;

/**
 *
 * @author hectdx
 */
@Controller(value="seguridadController")
@RequestMapping(value="/cargo")
public class CargoController {
    
    private final static Logger LOG=LoggerFactory.getLogger(CargoController.class);
    @Inject 
    private CargoService cargoService;
            
        
    @RequestMapping(method= RequestMethod.GET)
    public String cargos(Model model){
        CargoDTO cargoDTO=new CargoDTO();
        LOG.info("Procesando GET  para /cargo");
        
        model.addAttribute("cargoDTO", cargoDTO);
        return "seguridad/cargos";
    }
    
    @RequestMapping(value="/crear",method= RequestMethod.GET)
    public String crearCargo(Model model, @RequestParam(required=false) Integer idCargo){
        CargoDTO cargoDTO=new CargoDTO();
        LOG.info("Procesando GET  para /crear");
        if (idCargo!=null){
            cargoDTO=cargoService.findById(idCargo);
        }
        model.addAttribute("cargoDTO", cargoDTO);
        model.addAttribute("lstEstados", EstadosAI.getEstados());
        return "seguridad/cargo";
    }
    
    @RequestMapping(value="/ver",method= RequestMethod.GET)
    public String verCargo(Model model, @RequestParam(required=false) Integer idCargo){
        CargoDTO cargoDTO=null;
        LOG.info("Procesando GET  para /ver : "+idCargo);
        if (idCargo!=null){
            cargoDTO=cargoService.findById(idCargo);
        }
        model.addAttribute("cargoDTO", cargoDTO);
        return "seguridad/cargo_ver";
    }
    
    @RequestMapping(value="/grabar",method= RequestMethod.POST)
    @ResponseBody
    public Map grabarCargo(Model  model,CargoDTO cargoDTO){
        Map map=new HashMap();
        NombreCargo cargo=null;
        LOG.info("Procesando POST para /grabar");
        cargo=ConvertBeanUtil.convertCargoDTOtoEntity(cargoDTO);
        cargo=cargoService.grabar(cargo);        
        return map;
    }
    
    @RequestMapping(value="/eliminar",method= RequestMethod.GET)
    @ResponseBody
    public Map eliminarCargo(Model  model,@RequestParam Integer idCargo){
        Map map=new HashMap();
        boolean exito=false;
        LOG.info("Procesando GET para /eliminar");
        exito=cargoService.eliminar(idCargo);
        map.put("error", exito);
        return map;
    }
    
    @RequestMapping(value="/find",method= RequestMethod.GET)
    @ResponseBody
    public Map findCargos(CargoDTO cargo){
        Map map=new HashMap();    
        LOG.info("Procesando GET para  /find");
        
        map.put("lstCargosDTO", cargoService.find(cargo));
        map.put("totalRecords", cargoService.cantidadCargos(cargo));
        map.put("startIndex", cargo.getStartIndex());
        return map;
    }
    
    
    
    
}
